package com.wy.wait_and_notify;

import java.util.concurrent.TimeUnit;

/**
 * @author 美女
 * @date 2022/05/02 14:21
 **/
public class Demo1 {
    public static class MyThread extends Thread{
        //把对象传进来
        private Object o;

        public MyThread(Object o) {
            this.o = o;
        }

        @Override
        public void run() {
            try {
                TimeUnit.SECONDS.sleep(5);//休眠5s
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            synchronized (o){
                System.out.println("唤醒主线程");
                o.notify();//唤醒主线程（需要加锁）
            }
        }
    }
    public static void main(String[] args) throws InterruptedException {
        Object o=new Object();
        MyThread t=new MyThread(o);
        t.start();
        //2.
        synchronized (o){
            o.wait();//在o对象上使用，所以对o进行加锁，加锁是硬性规定
            System.out.println("可以到达");//MyThread有唤醒主线程的o.notify，这句话可以到达
        }
    }
}
